#!/bin/bash
sestatus
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/kvm.repo << EOF
[Virt]
name=CentOS-$releasever - Base
release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://mirrors.sohu.com/centos/7/virt/x86_64/kvm-common/
enable=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF
# 下载并添加 CentOS 基础仓库配置文件
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

# 安装 wget 和 bash-completion
yum install -y wget bash-completion git

# 下载并添加 EPEL 仓库配置文件
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# 清理并更新 yum 缓存
yum clean all
yum makecache

# 关闭并禁用 firewalld 服务
systemctl disable firewalld
systemctl stop firewalld

# 获取并设置主机 IP 地址
# 局域网获取内网 IP
HOSTIP=$(hostname -I | awk '{print $1}')
# 云服务器获取外网 IP
# HOSTIP=$(wget -qO- ifconfig.me)

# 将 IP 地址转换为数组形式
IFS='.' read -r -a IP_PARTS <<< "$HOSTIP"

# 增加最后一位的数值
((IP_PARTS[3]++))

# 重新组合成新的 IP 地址
HOSTIP1="${IP_PARTS[0]}.${IP_PARTS[1]}.${IP_PARTS[2]}.${IP_PARTS[3]}"

# 将新 IP 地址转换为数组形式
IFS='.' read -r -a IP_PARTS1 <<< "$HOSTIP1"

# 增加最后一位的数值
((IP_PARTS1[3]++))

# 重新组合成新的 IP 地址
HOSTIP2="${IP_PARTS1[0]}.${IP_PARTS1[1]}.${IP_PARTS1[2]}.${IP_PARTS1[3]}"

# 检查 /etc/hosts 文件中是否已存在 controller 条目
if grep -q "controller" /etc/hosts; then
    echo "/etc/hosts 中已存在 controller 条目，不进行添加操作。"
else
    # 将 IP 地址添加到 /etc/hosts 文件
    cat >> /etc/hosts << EOF
$HOSTIP controller
$HOSTIP1 compute1
$HOSTIP2 compute2
EOF
fi

# 移除并重新安装 centos-release-openstack-train
yum remove centos-release-openstack-train -y
yum install centos-release-openstack-train -y

# 修改 CentOS-OpenStack-train.repo 文件中的 mirrorlist 和 baseurl
sed -i 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/CentOS-OpenStack-train.repo
sed -i 's/#baseurl=/baseurl=/g' /etc/yum.repos.d/CentOS-OpenStack-train.repo
sed -i 's@http://mirror.centos.org@https://mirrors.aliyun.com@g' /etc/yum.repos.d/CentOS-OpenStack-train.repo

yum -y install etcd 
cat > /etc/etcd/etcd.conf << EOF
ETCD_LISTEN_PEER_URLS="http://192.168.153.101:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.153.101:2379,http://127.0.0.1:2379"
ETCD_NAME="controller"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.153.101:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.153.101:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.153.101:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
systemctl enable etcd && systemctl start etcd
netstat -tnlup|grep etcd
# etcdctl set testkey 001
# etcdctl get testkey

# 安装 net-tools 和 vim 以及 chrony
yum install -y net-tools vim chrony
# 启动 chronyd 服务
systemctl start chronyd
if grep -q "aliyun" /etc/chrony.conf; then
    echo "aliyun已配置，不进行添加操作。"
else
    echo "server ntp.aliyun.com iburst" >> /etc/chrony.conf
    echo "local stratum 1" >> /etc/chrony.conf
    echo "allow 192.168.153.0/24" >> /etc/chrony.conf
fi
systemctl restart chronyd
#!/bin/bash

# 检查是否为 root 用户，如果不是，则使用 sudo 执行后续命令
if [[ $EUID -ne 0 ]]; then
    echo "请使用 root 用户或使用 sudo 执行此脚本。"
    exit 1
fi

# 检查并安装 EPEL 仓库（如果尚未安装）
if ! yum list installed epel-release &> /dev/null; then
    yum install epel-release -y
else
    echo "EPEL 仓库已安装。"
fi

# 检查并安装 Python 3（如果尚未安装）
if ! command -v python3 &> /dev/null; then
    yum install python3 -y
else
    echo "Python 3 已安装。"
fi

# 检查并安装 Python 3 开发工具（如果尚未安装）
if ! command -v python3-config &> /dev/null; then
    yum install python3-devel -y
else
    echo "Python 3 开发工具已安装。"
fi

# 检查并安装 pip 工具（如果尚未安装）
if ! command -v pip3 &> /dev/null; then
    yum install python3-pip -y
else
    echo "pip 工具已安装。"
fi

# 验证 Python 3 安装
python3 -V

# 验证 pip 安装
pip3 -V

sudo yum install expect -y
